﻿using Newtonsoft.Json;
using ZZDingTalkSDK.ZZDingTalkRequest.Common;
using ZZDingTalkSDK.ZZDingTalkResponse;

namespace ZZDingTalkSDK.ZZDingTalkRequest
{
    /// <summary>
    /// 根据条件搜索单据实例ID列表，只有应用管理员才能使用这个接口
    /// </summary>
    public class YidaFormSearchFormDataIdsJsonRequest : IZZDRequest<YidaFormSearchFormDataIdsJsonResponse>
    {
        /// <summary>
        /// 应用ID
        /// </summary>
        [JsonProperty("appType")]
        public string? AppType { get; set; }

        /// <summary>
        /// 应用秘钥
        /// </summary>
        [JsonProperty("systemToken")]
        public string? SystemToken { get; set; }

        /// <summary>
        /// 表单ID
        /// </summary>
        [JsonProperty("formUuid")]
        public string? FormUuid { get; set; }

        /// <summary>
        /// 登陆人工号
        /// </summary>
        [JsonProperty("userId")]
        public string? UserId { get; set; }

        /// <summary>
        /// CreateFrom和CreateTo两个时间构造一个时间段。查询在该时间段创建的数据列表。字符串格式，目前支持yyyy-MM-dd和yyyy-MM-dd HH:mm:ss 两种日期格式。（可选）
        /// </summary>
        [JsonProperty("createFrom")]
        public string? CreateFrom { get; set; }

        /// <summary>
        /// CreateFrom和CreateTo两个时间构造一个时间段。查询在该时间段创建的数据列表。字符串格式，目前支持yyyy-MM-dd和yyyy-MM-dd HH:mm:ss 两种日期格式。和CreateFrom一起，相当于查询在2018-01-01到2018-01-31之间(包含01和31号)创建的数据。（可选）
        /// </summary>
        [JsonProperty("createTo")]
        public string? CreateTo { get; set; }

        /// <summary>
        /// ModifiedFrom和ModifiedTo构成一个时间段，查询在该时间段有修改的数据列表字符串格式，目前支持yyyy-MM-dd和yyyy-MM-dd HH:mm:ss 两种日期格式。（可选）
        /// </summary>
        [JsonProperty("modifiedFrom")]
        public string? ModifiedFrom { get; set; }

        /// <summary>
        /// ModifiedFrom和ModifiedTo构成一个时间段，查询在该时间段有修改的数据列表。字符串格式，目前支持yyyy-MM-dd和yyyy-MM-dd HH:mm:ss 两种日期格式。和ModifiedFrom一起，相当于查询在2018-01-01到2018-01-31之间(包含01和31号)被修改的数据。（可选）
        /// </summary>
        [JsonProperty("modifiedTo")]
        public string? ModifiedTo { get; set; }

        /// <summary>
        /// 语言，可选值：zh_CN/en_US 默认：zh_CN。
        /// </summary>
        [JsonProperty("language")]
        public string Language { get; set; } = "zh_CN";

        /// <summary>
        /// 创建人工号（可选）
        /// </summary>
        [JsonProperty("originatorId")]
        public string? OriginatorId { get; set; }

        /// <summary>
        /// 根据表单内组件值查询，格式见附录：根据组件值进行条件搜索，组件值格式说明（可选）
        /// </summary>
        [JsonProperty("searchFieldJson")]
        public string? SearchFieldJson { get; set; }

        /// <summary>
        /// 每页记录数，必须大于0，默认值10
        /// </summary>
        [JsonProperty("pageSize")]
        public int PageSize { get; set; } = 10;

        /// <summary>
        /// 当前页，必须大于0，默认值1。
        /// </summary>
        [JsonProperty("currentPage")]
        public int CurrentPage { get; set; } = 1;

        public string GetApiName()
        {
            return "/yida/form/searchFormDataIds.json";
        }
    }
}